home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’93 / SCSIPatch / Interfaces / AIncludes / patchEqu.a
Encoding:
Text File  |  1992-06-13  |  4.4 KB  |  149 lines  |  [TEXT/MPS ]

  1. ; ===========================================
  2. ;  Copyright Paul Baxter
  3. ; ===========================================
  4. ;
  5. ; Use:
  6. ;     Note: You may use glue instead of the macros by omitting the underscore.
  7. ;        If you use the glue, SCSIPatchAvail will be called for you. Otherwise
  8. ;            if any macro is called without the patch installed it will cause a crash.
  9. ;
  10. ; To see if patch is installed. 
  11. ; This is a glue routine and must be linked in. This only needs to be called once.
  12. ;        CLR.W        -(SP)
  13. ;       JSR        SCSIPatchAvail
  14. ;        MOVE.W    (SP)+,D0                        ; D0.W is the result non zero = installed
  15. ;
  16. ; To start recording SCSI calls
  17. ;        CLR.W        -(SP)
  18. ;        _SCSIStartRecord
  19. ;        MOVE.W    (SP)+,D0                        ; D0.W is the result 0 = noErr
  20. ;
  21. ; To stop recording SCSI calls
  22. ;        CLR.W        -(SP)
  23. ;        _SCSIStopRecord
  24. ;        MOVE.W    (SP)+,D0                        ; D0.W is the result 0 = noErr
  25. ;
  26. ; To reset the buffer pointer
  27. ;        CLR.W        -(SP)
  28. ;        _SCSIInitRecord
  29. ;        MOVE.W    (SP)+,D0                        ; D0.W is the result 0 = noErr
  30. ;
  31. ; To get the buffer pointer and count
  32. ;        CLR.W        -(SP)
  33. ;        PEA        buffer(A6)                    ; address you want the pointer stored
  34. ;        PEA        count(A6)                    ; address you want the count stored
  35. ;        _SCSISendRecord
  36. ;        MOVE.W    (SP)+,D0                        ; D0.W is the result 0 = noErr
  37. ;
  38. ; ===========================================
  39. ;               buffer format
  40. ; ===========================================
  41. ; scsiReset command
  42. ; 0000 0000
  43. ;   |        |__Result Code Word
  44. ;   |_______Routine Selector Word
  45. ; scsiGet command
  46. ; 0001 0000
  47. ;   |        |__Result Code Word
  48. ;   |_______Routine Selector Word
  49. ;
  50. ; scsiSelect, scsiSelAtn commands
  51. ; (scsiSelect = 0002) (scsiSelAtn = 000B)
  52. ; 0002 0000 0000
  53. ;   |    |    |__Result Code Word
  54. ;     |    |_______SCSI ID
  55. ;   |____________Routine Selector Word
  56. ;
  57. ; scsiCmd command
  58. ; 0003 0006 0800 1C32 0100 0000
  59. ;   |    |    |    |    |    |__Result Code Word
  60. ;   |    |    |____|____|_______Command bytes
  61. ;     |    |______________________Length of Command
  62. ;   |___________________________Routine Selector Word
  63. ;
  64. ; scsiComplete command
  65. ; 0004 00C1 CE20 00D2 4130 0000 2E30 0000 0000 0000
  66. ;   |    |    |    |    |    |    |    |    |    |__Result Code Word
  67. ;   |    |    |    |    |    |    |    |    |_______Message Word Result
  68. ;   |    |    |    |    |    |      |    |____________Status Word Result
  69. ;   |    |    |    |    |    |____|_________________Completetion Time
  70. ;   |    |    |    |____|___________________________Message Word Pointer
  71. ;     |    |____|_____________________________________Status Word Pointer
  72. ;   |_______________________________________________Routine Selector Word
  73. ;
  74. ; scsiRead, scsiWrite, scsiRBlind, scsiWBlind commands
  75. ; (scsiRead = 5) (scsiWrite = 0006) (scsiRBlind = 0008) (scsiWBlind = 0009)
  76. ; 0005 0001 001E 56D2 0000 0001 0007 0000 0000 0000 0000 0000
  77. ;   |    |    |    |    |    |    |    |    |    |    |    |__Result Code Word
  78. ;     |    |____|____|____|____|____|____|____|____|____|_______SCSIInstrs (TIB) up to scStop
  79. ;   |_________________________________________________________Routine Selector Word
  80. ;
  81. ; scsiStat command
  82. ; 000A 0000
  83. ;   |        |__Status Word
  84. ;   |_______Routine Selector Word
  85. ;
  86. ; scsiMsgIn command
  87. ; 000C 001E 2840 0001 0000
  88. ;   |    |    |    |    |__Result Code Word
  89. ;   |    |    |    |_______Message Word
  90. ;     |    |____|____________Message Word Pointer
  91. ;   |______________________Routine Selector Word
  92. ;
  93. ; scsiMsgOut command
  94. ; 000D 0001 0000
  95. ;   |    |    |__Result Code Word
  96. ;     |    |_______Message Word
  97. ;   |____________Routine Selector Word
  98. ;
  99. ; data_opcode command
  100. ; 0204 0008 0000 0000 0000 0000
  101. ;   |    |    |    |    |    |
  102. ;   |    |    |____|____|____|_Data
  103. ;     |    |_____________________Data Count
  104. ;   |__________________________Routine Selector Word
  105. ;
  106. ; ===========================================
  107. ; routine selectors
  108. ; ===========================================
  109. start_rec        EQU    512
  110. stop_rec            EQU    513
  111. clear_rec        EQU    514
  112. send_rec            EQU    515
  113.  
  114. data_opcode        EQU    516
  115.  
  116.                 MACRO
  117.                 _SCSIStartRecord
  118.                 MOVE        #start_rec,-(SP)
  119.                 _SCSIDispatch
  120.                 ENDM
  121.  
  122.                 MACRO
  123.                 _SCSIStopRecord
  124.                 MOVE        #stop_rec,-(SP)
  125.                 _SCSIDispatch
  126.                 ENDM
  127.  
  128.                 MACRO
  129.                 _SCSIInitRecord
  130.                 MOVE        #clear_rec,-(SP)
  131.                 _SCSIDispatch
  132.                 ENDM
  133.  
  134.                 MACRO
  135.                 _SCSISendRecord
  136.                 MOVE        #send_rec,-(SP)
  137.                 _SCSIDispatch
  138.                 ENDM
  139.  
  140.                 Import SCSIStartRecord,SCSIStopRecord,SCSIInitRecord
  141.                 Import SCSISendRecord,SCSIPatchAvail
  142.  
  143. ;FUNCTION SCSIStopRecord: OSErr
  144. ;FUNCTION SCSIStopRecord: OSErr
  145. ;FUNCTION SCSIInitRecord: OSErr
  146. ;FUNCTION SCSISendRecord(VAR buffer: Ptr, VAR count:LONGINT): integer
  147. ;FUNCTION SCSIPatchAvail: integer
  148.